home *** CD-ROM | disk | FTP | other *** search
/ Network Support Library / RoseWare - Network Support Library.iso / apidev / ccnw.txt < prev    next >
Text File  |  1993-12-13  |  8KB  |  207 lines

  1. Product Information
  2.  
  3. from:   Object Resource Corporation
  4.         4323 Brown No. 249
  5.         Dallas, TX 75219
  6.         214-528-2745
  7.  
  8.                     -------------------------------
  9.                      Component Classes for NetWare
  10.                     -------------------------------
  11.  
  12. Modules I & II: Bindery, Queue, Printing, Workstation, Connection, File
  13.                 and Directory-related C++ Classes
  14.  
  15. These classes form a C++ object oriented interface to NetWare 286 and NetWare 
  16. 386 system calls and are designed for easy use by both experienced and novice 
  17. NetWare programmers.
  18.  
  19.  
  20. - Object-oriented design produces classes which are easy to learn and easy 
  21.   to use
  22. - Interface is far less complex, more intuitive than 'C' interface
  23. - Byte-swapping issues are encapsulated within the classes
  24. - Includes utility classes for decoding errors
  25. - Bindery classes include NWBindery, NWObject, NWProperty and NWSecurity
  26. - Queue classes include NWStdJobHeader, NWQueue, NWJob and NWJobServer
  27. - Print service classes include NWLPTDevice and NWCaptureFlags
  28. - Connection classes include NWShell, NWShellConnection, NWDrive, 
  29.   NWFileServer
  30. - Class NWDrive contains methods for drive mapping
  31. - Iterator (aka cursor) classes to traverse a set of objects (e.g. 
  32.   NWFileIterator)
  33. - Objects transparently send NetWare requests to the correct connected file 
  34.   server
  35. - Completely independent from other class libraries (e.g. MFC)
  36. - Complete class reference, manual and examples included
  37. - Examples include C++ versions of example code from Rose programmer's guide
  38. - Source code free to registered users
  39. - Use in DOS or Windows environment
  40. - Versions for Borland, Microsoft compilers
  41.  
  42.  
  43. ORC tools are designed as flexible, easy to use software components for 
  44. application programming. The C++ interface is less complex and less error 
  45. prone than the standard 'C' or assembly interfaces, yielding a shorter 
  46. development time and -- with good application design -- code which is much 
  47. more resilient to change.
  48.  
  49.  
  50. Version:            1.1
  51. Release:            Nov '93
  52. Suggested Retail:   $299
  53. NetWare API:        NetWare 2.x & 3.x
  54. Compilers:          Borland 3.1 and Microsoft 7.00
  55. Environments:       DOS and MS Windows
  56.  
  57.  
  58. General Description
  59. -------------------
  60.  
  61. Object Resource Corporation's Component Classes for NetWare is a software 
  62. library which organizes the NetWare API into C++ classes. These classes -- 
  63. released in several modules -- include bindery, job queue, print services, 
  64. connection, workstation, file and directory related classes.
  65.  
  66.  
  67. Design Goals
  68. ------------
  69.  
  70. The great majority of an API's functions requires a programmer to be 
  71. continually aware of both the logical goal of the task at hand and the 
  72. implementation details required to implement the task successfully. It is 
  73. this coupling of logical issues with implementation issues which often makes 
  74. an API difficult to understand and use.
  75.  
  76. The primary goal in the design of these classes is to separate the logical 
  77. issues from the implementation issues -- to separate the what from the how. 
  78. The resulting interface allows a programmer to concentrate on the logical 
  79. task at hand without being distracted by implementation details.
  80.  
  81. Each class's methods should be usable in a direct, intuitive manner, 
  82. requiring only a working knowledge of the NetWare concepts involved 
  83. (e.g., knowing that the NetWare shell maintains connections with up to 
  84. eight file servers). This will considerably shorten the learning curve 
  85. required to use the API.
  86.  
  87. A high percentage of programming errors occurs while dealing with the many 
  88. details of implementation. Since the classes hide as much implementation as 
  89. possible, there are fewer errors, resulting in a shorter development time.
  90.  
  91. The downside of this design approach is that sometimes a programmer must do 
  92. extra work to accomplish a very specific task (e.g. declaring several objects 
  93. in order to reach the one with the desired function member). In this case it 
  94. would be desirable to simply 'call a function', so we have used function 
  95. overloading and static functions to provide such alternatives to the 
  96. programmer.
  97.  
  98.  
  99. Class Listing for Modules I & II 
  100. --------------------------------
  101.  
  102. Class           Parent      Comments                            
  103.  
  104. NWBindery                   belongs to a file server -- contains objects
  105. NWObject                    has properties
  106. NWFileServer                NWObject    has bindery & set of volumes
  107. NWJobQueue      NWObject    has set of queued jobs
  108. NWJobServer     NWObject
  109. NWCurrentServer NWJobServer for use in job server code
  110.  
  111. NWProperty
  112. NWSetProperty   NWProperty  has set of corresponding bindery objects
  113. NWValueProperty NWProperty  has value
  114. NWValue
  115. NWSecurity                  bindery access levels
  116.  
  117. _NWJob                      base class -- adapt for custom job types
  118. NWJob           _NWJob      standard job type
  119.  
  120. NWPrintServices             shell's printing redirection services
  121. NWLPTDevice                 e.g. LPT1:
  122. NWCaptureFlags
  123.  
  124. NWShell                     global to a workstation -- manages connections
  125. NWShellConnection           one of eight shell connections
  126. NWDrive                     Drives A,B,C...
  127.  
  128. NWVolume                    contained by file server...has a root directory
  129. NWDirectory                 contains subdirectories, files & trustees
  130. NWFile
  131. NWTrustee                   relates a directory to a bindery object
  132. NWRights                    NetWare trustee rights or maximum rights
  133.  
  134.  
  135. Iterator Classes
  136. ----------------
  137.  
  138. Iterator classes exist whenever an object has a set of objects related to it 
  139. (e.g. a containing relationship). Iterators are used to traverse the set of 
  140. related objects. A NWFileIterator object, for instance, is used to traverse 
  141. the set of a directory's files; a NWObjectIterator object to traverse a given 
  142. set of bindery objects.
  143.  
  144.  
  145. Example Code Fragments
  146. ----------------------
  147.  
  148. Attach and Login to File Server:
  149. -------------------------------
  150.  
  151. NWFileServer server("ServersName");
  152. NWShellConnection *connection = NWShell::AttachToFileServer(server);
  153. if( connection )
  154.     int result = Server.LoginToServer("UsersName","UsersPassword");
  155.  
  156. Map a Drive:
  157. -----------
  158.  
  159. NWDrive drive('H');
  160. int stat = drive.MapDrive("\PROGS\EXAMPLES");
  161.  
  162. List Files in Directory:
  163. -----------------------
  164.  
  165. NWDirectory *directory = drive.Directory(); // 'drive' from prev. example
  166. if( directory )
  167.     NWFileIterator fileSet = directory->GetFileIterator();
  168.     while( fileSet ) // while there is another file
  169.         {
  170.         NWFile *file = fileSet.Current();
  171.         cout << "File name = " << file->Name() << endl;
  172.         delete file; // deletes in-memory object...not actual file!
  173.         fileSet++;
  174.         }
  175.  
  176. Add Job to Existing Queue:
  177. -------------------------
  178.  
  179. NWJobQueue Q(QUEUE_NAME,QUEUE_TYPE);
  180. NWJob job;
  181. int result = Q.AddJob(job);
  182. if( !result ) // if no error
  183.      {
  184.      job.NETQ << "Writing to job's open fstream" << endl;
  185.      job.CloseAndStart();
  186.      }
  187.  
  188. Display Text for Error Code:
  189. ---------------------------
  190.  
  191. cout << "Error " << errorNumber << " deleting file: " 
  192.      << NWDirectoryError(errorNumber) << endl;
  193.  
  194. Display Shell's Connections:
  195. ---------------------------
  196.  
  197. for(int connNo=1; connNo<=8; connNo++)
  198.     {
  199.     NWShellConnection connection(connNo);
  200.     cout << "Connection #" << connNo;
  201.     if( connection.IsInUse() )
  202.     cout << " is connected to server " << connection.ServerName() << endl;
  203.     else
  204.         cout << " is not in use." << endl;
  205.     }
  206.                
  207.